ποΈGitΠ―ΡΠ°ποΈ
.github/workflows/reusable-check.yml gh-readonly-queue/main/pr-6597-a885127337f8d0abf09f1f5537560ed7af85e32d (34896a4a) Text, 23.90 KB
Tff7b72nameTb4b4b4: Ta5d6ffReusableTa5d6ff Ta5d6ffAndroidTa5d6ff Ta5d6ffCheck
Tff7b72onTb4b4b4:
Tff7b72workflow_callTb4b4b4:
Tff7b72inputsTb4b4b4:
Tff7b72run_lintTb4b4b4:
Tff7b72typeTb4b4b4: Ta5d6ffboolean
Tff7b72defaultTb4b4b4: Ta5d6fftrue
Tff7b72run_screenshot_testsTb4b4b4:
Tff7b72typeTb4b4b4: Ta5d6ffboolean
Tff7b72defaultTb4b4b4: Ta5d6fftrue
Tff7b72run_unit_testsTb4b4b4:
Tff7b72typeTb4b4b4: Ta5d6ffboolean
Tff7b72defaultTb4b4b4: Ta5d6fftrue
Tff7b72run_android_buildTb4b4b4:
Tff7b72typeTb4b4b4: Ta5d6ffboolean
Tff7b72defaultTb4b4b4: Ta5d6fftrue
Tff7b72run_coverageTb4b4b4:
Tff7b72typeTb4b4b4: Ta5d6ffboolean
Tff7b72defaultTb4b4b4: Ta5d6fftrue
Tff7b72run_desktop_buildsTb4b4b4:
Tff7b72typeTb4b4b4: Ta5d6ffboolean
Tff7b72defaultTb4b4b4: Ta5d6fffalse
Tff7b72run_desktop_flatpak_srcTb4b4b4:
Tff7b72typeTb4b4b4: Ta5d6ffboolean
Tff7b72defaultTb4b4b4: Ta5d6fffalse
Tff7b72upload_artifactsTb4b4b4:
Tff7b72typeTb4b4b4: Ta5d6ffboolean
Tff7b72defaultTb4b4b4: Ta5d6fftrue
Tff7b72secretsTb4b4b4:
Tff7b72GRADLE_ENCRYPTION_KEYTb4b4b4:
Tff7b72requiredTb4b4b4: Ta5d6fffalse
Tff7b72DEVELOCITY_ACCESS_KEYTb4b4b4:
Tff7b72requiredTb4b4b4: Ta5d6fffalse
Tff7b72CODECOV_TOKENTb4b4b4:
Tff7b72requiredTb4b4b4: Ta5d6fffalse
Tff7b72DATADOG_APPLICATION_IDTb4b4b4:
Tff7b72requiredTb4b4b4: Ta5d6fffalse
Tff7b72DATADOG_CLIENT_TOKENTb4b4b4:
Tff7b72requiredTb4b4b4: Ta5d6fffalse
Tff7b72GOOGLE_MAPS_API_KEYTb4b4b4:
Tff7b72requiredTb4b4b4: Ta5d6fffalse
Tff7b72envTb4b4b4:
Tff7b72DATADOG_APPLICATION_IDTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DATADOG_APPLICATION_IDTa5d6ff Ta5d6ff}}
Tff7b72DATADOG_CLIENT_TOKENTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DATADOG_CLIENT_TOKENTa5d6ff Ta5d6ff}}
Tff7b72MAPS_API_KEYTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GOOGLE_MAPS_API_KEYTa5d6ff Ta5d6ff}}
Tff7b72GITHUB_TOKENTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.tokenTa5d6ff Ta5d6ff}}
T8b949e# Only main writes the Gradle caches. merge_group scopes are throwaway branches
T8b949e# (per gradle/actions docs) β writes there had no reader.
Tff7b72GRADLE_CACHE_READ_ONLYTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.refTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'refs/heads/main'Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff'false'Ta5d6ff Ta5d6ff||Ta5d6ff Ta5d6ff'true'Ta5d6ff Ta5d6ff}}
T8b949e# Job summary as a PR comment on failure; no-ops on fork PRs (read-only token).
Tff7b72GRADLE_PR_COMMENTTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.event_nameTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'pull_request'Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff'on-failure'Ta5d6ff Ta5d6ff||Ta5d6ff Ta5d6ff'never'Ta5d6ff Ta5d6ff}}
Tff7b72jobsTb4b4b4:
T8b949e# There is deliberately no fan-in "setup" job here. Every heavy job used to
T8b949e# `needs:` one, which serialized TWO runner-queue waits per run β under pool
T8b949e# congestion the setup job alone sat queued for ~10 minutes before the real
T8b949e# jobs could even enter the queue. Its two outputs are now sourced without a
T8b949e# job: cache writability is the pure expression above, and the versionCode
T8b949e# comes from one of two places:
T8b949e# - Jobs whose artifacts ship (android-check, build-desktop,
T8b949e# build-flatpak-src) check out full β blob-less β history so the build's
T8b949e# GitVersionValueSource derives the real commit-count versionCode.
T8b949e# - Validation-only jobs (lint, screenshot, test shards) pin VERSION_CODE
T8b949e# to a constant instead: their outputs are never shipped, and the real
T8b949e# value changes on every commit, which poisons the versionCode-dependent
T8b949e# task chain (BuildConfig -> compile -> test/lint) in the build cache.
T8b949e# A stable value keeps those cache keys identical across commits so
T8b949e# unchanged modules resolve FROM-CACHE on every run. Keep the pinned
T8b949e# value (30000000) identical across the three jobs for the same reason.
T8b949e# ββ Lint & Static Analysis ββββββββββββββββββββββββββββββββββββββββββ
Tff7b72lint-checkTb4b4b4:
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72pull-requestsTb4b4b4: Ta5d6ffwrite
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff30
Tff7b72ifTb4b4b4: Ta5d6ffinputs.run_lintTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6fftrue
Tff7b72envTb4b4b4:
Tff7b72VERSION_CODETb4b4b4: Ta5d6ff30000000 T8b949e# pinned for cache stability -- see comment above
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckoutTa5d6ff Ta5d6ffcode
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v7.0.1
Tff7b72withTb4b4b4:
T8b949e# Full history: spotless ratchetFrom("origin/main") diffs against main.
Tff7b72fetch-depthTb4b4b4: Ta5d6ff0
Tff7b72filterTb4b4b4: Ta5d6ff'Ta5d6ffblob:noneTa5d6ff'
Tff7b72submodulesTb4b4b4: Ta5d6fftrue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffGradleTa5d6ff Ta5d6ffSetup
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/gradle-setup
Tff7b72withTb4b4b4:
Tff7b72gradle_encryption_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GRADLE_ENCRYPTION_KEYTa5d6ff Ta5d6ff}}
Tff7b72develocity_access_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DEVELOCITY_ACCESS_KEYTa5d6ff Ta5d6ff}}
Tff7b72job_summary_pr_commentTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_PR_COMMENTTa5d6ff Ta5d6ff}}
Tff7b72cache_read_onlyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_CACHE_READ_ONLYTa5d6ff Ta5d6ff}}
Tff7b72cache_configuration_cacheTb4b4b4: Ta5d6ff'Ta5d6fftrueTa5d6ff' T8b949e# VERSION_CODE pinned -> entries actually reuse
Tff7b72install_jetbrains_jdkTb4b4b4: Ta5d6ff'Ta5d6fftrueTa5d6ff'
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffLint,Ta5d6ff Ta5d6ffAnalysisTa5d6ff Ta5d6ff&Ta5d6ff Ta5d6ffKMPTa5d6ff Ta5d6ffSmokeTa5d6ff Ta5d6ffCompile
Tff7b72runTb4b4b4: Ta5d6ff./gradlewTa5d6ff Ta5d6ffspotlessCheckTa5d6ff Ta5d6ffdetektTa5d6ff Ta5d6ffandroidApp:lintFdroidDebugTa5d6ff Ta5d6ffandroidApp:lintGoogleDebugTa5d6ff Ta5d6ffcore:barcode:lintFdroidDebugTa5d6ff Ta5d6ffcore:barcode:lintGoogleDebugTa5d6ff Ta5d6ffkmpSmokeCompileTa5d6ff Ta5d6ff-Pci=trueTa5d6ff Ta5d6ff--continue
T8b949e# ββ Screenshot Test Validation ββββββββββββββββββββββββββββββββββββββ
Tff7b72screenshot-checkTb4b4b4:
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72pull-requestsTb4b4b4: Ta5d6ffwrite
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff20
Tff7b72ifTb4b4b4: Ta5d6ffinputs.run_lintTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6fftrueTa5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffinputs.run_screenshot_testsTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6fftrue
Tff7b72envTb4b4b4:
Tff7b72VERSION_CODETb4b4b4: Ta5d6ff30000000 T8b949e# pinned for cache stability -- see comment above
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckoutTa5d6ff Ta5d6ffcode
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v7.0.1
Tff7b72withTb4b4b4:
Tff7b72fetch-depthTb4b4b4: Ta5d6ff1
Tff7b72submodulesTb4b4b4: Ta5d6fftrue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffGradleTa5d6ff Ta5d6ffSetup
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/gradle-setup
Tff7b72withTb4b4b4:
Tff7b72gradle_encryption_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GRADLE_ENCRYPTION_KEYTa5d6ff Ta5d6ff}}
Tff7b72develocity_access_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DEVELOCITY_ACCESS_KEYTa5d6ff Ta5d6ff}}
Tff7b72job_summary_pr_commentTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_PR_COMMENTTa5d6ff Ta5d6ff}}
Tff7b72cache_read_onlyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_CACHE_READ_ONLYTa5d6ff Ta5d6ff}}
Tff7b72cache_configuration_cacheTb4b4b4: Ta5d6ff'Ta5d6fftrueTa5d6ff' T8b949e# VERSION_CODE pinned -> entries actually reuse
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffScreenshotTa5d6ff Ta5d6ffTestTa5d6ff Ta5d6ffValidation
Tff7b72runTb4b4b4: Ta5d6ff./gradlewTa5d6ff Ta5d6ff:screenshot-tests:validateDebugScreenshotTestTa5d6ff Ta5d6ff-Pci=true
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffscreenshotTa5d6ff Ta5d6ffdiffTa5d6ff Ta5d6ffreport
Tff7b72ifTb4b4b4: Ta5d6fffailure()
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@v7
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffscreenshot-diff-report
Tff7b72pathTb4b4b4: Ta5d6ffscreenshot-tests/build/reports/screenshotTest/
Tff7b72retention-daysTb4b4b4: Ta5d6ff14
Tff7b72if-no-files-foundTb4b4b4: Ta5d6ffwarn
T8b949e# ββ Reproducible Build Verification βββββββββββββββββββββββββββββββββ
T8b949e# Only runs in the merge queue (not PRs, to keep PR feedback fast; not main pushes,
T8b949e# which are the same merge commit the queue just verified).
Tff7b72rb-checkTb4b4b4:
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72pull-requestsTb4b4b4: Ta5d6ffwrite
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff30
Tff7b72ifTb4b4b4: Ta5d6ffinputs.run_lintTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6fftrueTa5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffgithub.event_nameTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'merge_group'
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckoutTa5d6ff Ta5d6ffcode
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v7.0.1
Tff7b72withTb4b4b4:
Tff7b72fetch-depthTb4b4b4: Ta5d6ff1
Tff7b72submodulesTb4b4b4: Ta5d6fftrue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffGradleTa5d6ff Ta5d6ffSetup
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/gradle-setup
Tff7b72withTb4b4b4:
Tff7b72gradle_encryption_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GRADLE_ENCRYPTION_KEYTa5d6ff Ta5d6ff}}
Tff7b72develocity_access_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DEVELOCITY_ACCESS_KEYTa5d6ff Ta5d6ff}}
Tff7b72job_summary_pr_commentTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_PR_COMMENTTa5d6ff Ta5d6ff}}
Tff7b72cache_read_onlyTb4b4b4: Ta5d6ff'Ta5d6fftrueTa5d6ff'
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffVerifyTa5d6ff Ta5d6ffReproducibleTa5d6ff Ta5d6ffBuildTa5d6ff Ta5d6ff(fdroid)
Tff7b72envTb4b4b4:
Tff7b72VERSION_CODETb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.run_numberTa5d6ff Ta5d6ff}}
Tff7b72runTb4b4b4: Ta5d6ff./scripts/verify-rb.sh
T8b949e# ββ Sharded Unit Tests ββββββββββββββββββββββββββββββββββββββββββββββ
T8b949e# Tests are split into 3 shards that run in parallel. Module assignment is
T8b949e# balance-driven (measured test-execution time), not purely semantic: the
T8b949e# three heaviest core modules (:core:database ~135s, :core:service ~119s,
T8b949e# :core:network ~66s) are placed in the lighter shards so all three finish
T8b949e# in roughly the same wall time. shard-app already compiles the full
T8b949e# dependency graph (androidApp depends on everything), so hosting extra
T8b949e# core-module tests there costs only their execution time.
T8b949e# These lists are hand-maintained; pull-request.yml's check-changes job
T8b949e# guards them against drift (every module in settings.gradle.kts with test
T8b949e# sources must appear here or be explicitly exempted).
T8b949e# shard-core: remaining core:* KMP module tests (allTests)
T8b949e# shard-feature: feature:* KMP module tests + :core:service
T8b949e# shard-app: Pure-Android/JVM tests (androidApp, desktopApp,
T8b949e# core:barcode, feature:car, feature:widget)
T8b949e# + :core:database + :core:network
Tff7b72test-shardsTb4b4b4:
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72pull-requestsTb4b4b4: Ta5d6ffwrite
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff45
Tff7b72ifTb4b4b4: Ta5d6ffinputs.run_unit_testsTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6fftrue
Tff7b72envTb4b4b4:
Tff7b72VERSION_CODETb4b4b4: Ta5d6ff30000000 T8b949e# pinned for cache stability -- see comment above
Tff7b72strategyTb4b4b4:
Tff7b72fail-fastTb4b4b4: Ta5d6fffalse
Tff7b72matrixTb4b4b4:
Tff7b72shardTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffshard-core
Tff7b72tasksTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72:core:ble:allTests
Tff7b72:core:common:allTests
Tff7b72:core:data:allTests
Tff7b72:core:datastore:allTests
Tff7b72:core:domain:allTests
Tff7b72:core:konsist:allTests
Tff7b72:core:model:allTests
Tff7b72:core:navigation:allTests
Tff7b72:core:prefs:allTests
Tff7b72:core:repository:allTests
Tff7b72:core:takserver:allTests
Tff7b72:core:testing:allTests
Tff7b72:core:ui:allTests
Tff7b72koverTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72:core:ble:koverXmlReport
Tff7b72:core:common:koverXmlReport
Tff7b72:core:data:koverXmlReport
Tff7b72:core:datastore:koverXmlReport
Tff7b72:core:domain:koverXmlReport
Tff7b72:core:konsist:koverXmlReport
Tff7b72:core:model:koverXmlReport
Tff7b72:core:navigation:koverXmlReport
Tff7b72:core:prefs:koverXmlReport
Tff7b72:core:repository:koverXmlReport
Tff7b72:core:takserver:koverXmlReport
Tff7b72:core:testing:koverXmlReport
Tff7b72:core:ui:koverXmlReport
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffshard-feature
Tff7b72tasksTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72:core:service:allTests
Tff7b72:feature:connections:allTests
Tff7b72:feature:discovery:allTests
Tff7b72:feature:docs:allTests
Tff7b72:feature:firmware:allTests
Tff7b72:feature:intro:allTests
Tff7b72:feature:map:allTests
Tff7b72:feature:messaging:allTests
Tff7b72:feature:node:allTests
Tff7b72:feature:settings:allTests
Tff7b72:feature:wifi-provision:allTests
Tff7b72koverTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72:core:service:koverXmlReport
Tff7b72:feature:connections:koverXmlReport
Tff7b72:feature:discovery:koverXmlReport
Tff7b72:feature:docs:koverXmlReport
Tff7b72:feature:firmware:koverXmlReport
Tff7b72:feature:intro:koverXmlReport
Tff7b72:feature:map:koverXmlReport
Tff7b72:feature:messaging:koverXmlReport
Tff7b72:feature:node:koverXmlReport
Tff7b72:feature:settings:koverXmlReport
Tff7b72:feature:wifi-provision:koverXmlReport
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffshard-app
Tff7b72tasksTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72:androidApp:testFdroidDebugUnitTest
Tff7b72:androidApp:testGoogleDebugUnitTest
Tff7b72:desktopApp:test
Tff7b72:core:barcode:testFdroidDebugUnitTest
Tff7b72:core:barcode:testGoogleDebugUnitTest
Tff7b72:core:database:allTests
Tff7b72:core:network:allTests
Tff7b72:feature:car:testFdroidDebugUnitTest
Tff7b72:feature:car:testGoogleDebugUnitTest
Tff7b72:feature:widget:testDebugUnitTest
Tff7b72koverTb4b4b4: Tb4b4b4>Tb4b4b4-
Tff7b72:androidApp:koverXmlReportFdroidDebug
Tff7b72:androidApp:koverXmlReportGoogleDebug
Tff7b72:core:barcode:koverXmlReportFdroidDebug
Tff7b72:core:barcode:koverXmlReportGoogleDebug
Tff7b72:desktopApp:koverXmlReport
Tff7b72:core:database:koverXmlReport
Tff7b72:core:network:koverXmlReport
Tff7b72:feature:car:koverXmlReportFdroidDebug
Tff7b72:feature:car:koverXmlReportGoogleDebug
Tff7b72:feature:widget:koverXmlReportDebug
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckoutTa5d6ff Ta5d6ffcode
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v7.0.1
Tff7b72withTb4b4b4:
Tff7b72fetch-depthTb4b4b4: Ta5d6ff1
Tff7b72submodulesTb4b4b4: Ta5d6fftrue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffGradleTa5d6ff Ta5d6ffSetup
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/gradle-setup
Tff7b72withTb4b4b4:
Tff7b72gradle_encryption_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GRADLE_ENCRYPTION_KEYTa5d6ff Ta5d6ff}}
Tff7b72develocity_access_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DEVELOCITY_ACCESS_KEYTa5d6ff Ta5d6ff}}
Tff7b72job_summary_pr_commentTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_PR_COMMENTTa5d6ff Ta5d6ff}}
Tff7b72cache_read_onlyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_CACHE_READ_ONLYTa5d6ff Ta5d6ff}}
Tff7b72cache_configuration_cacheTb4b4b4: Ta5d6ff'Ta5d6fftrueTa5d6ff' T8b949e# VERSION_CODE pinned -> entries actually reuse
T8b949e# Shards run different task graphs; kover flips the graph again.
Tff7b72cache_key_suffixTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffmatrix.shard.nameTa5d6ff Ta5d6ff}}${{Ta5d6ff Ta5d6ffinputs.run_coverageTa5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff'-kover'Ta5d6ff Ta5d6ff||Ta5d6ff Ta5d6ff''Ta5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffRunTa5d6ff Ta5d6ffTestsTa5d6ff Ta5d6ff&Ta5d6ff Ta5d6ffCoverageTa5d6ff Ta5d6ff(${{Ta5d6ff Ta5d6ffmatrix.shard.nameTa5d6ff Ta5d6ff}})
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72kover_tasks=""
Tff7b72if [[ "${{ inputs.run_coverage }}" == "true" ]]; then
Tff7b72kover_tasks="${{ matrix.shard.kover }}"
Tff7b72fi
Tff7b72# CCUD tags every shard with the same `CI job=test-shards`, which is the largest
Tff7b72# single CI cost bucket and therefore the one worth splitting. Shard identity is
Tff7b72# otherwise only recoverable by parsing the requested task list.
Tff7b72./gradlew ${{ matrix.shard.tasks }} $kover_tasks -Pci=true --continue \
Tff7b72"-Dscan.value.CI shard=${{ matrix.shard.name }}"
T8b949e# Flags are tagged by logical module group (core/feature/app/desktop), matching
T8b949e# codecov.yml's flags/component_management β NOT by shard name. Shards are a CI
T8b949e# load-balancing detail; which shard happens to run a module must not change
T8b949e# which Codecov flag its coverage lands under.
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6fftestTa5d6ff Ta5d6ffresultsTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffCodecovTa5d6ff Ta5d6ff(core)
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ff!cancelled()Ta5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffcodecov/codecov-action@v7
Tff7b72withTb4b4b4:
Tff7b72tokenTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.CODECOV_TOKENTa5d6ff Ta5d6ff}}
Tff7b72slugTb4b4b4: Ta5d6ffmeshtastic/Meshtastic-Android
Tff7b72flagsTb4b4b4: Ta5d6ffcore
Tff7b72fail_ci_if_errorTb4b4b4: Ta5d6fffalse
Tff7b72disable_searchTb4b4b4: Ta5d6fftrue
Tff7b72report_typeTb4b4b4: Ta5d6fftest_results
Tff7b72filesTb4b4b4: Ta5d6ff"Ta5d6ffcore/**/build/test-results/**/*.xmlTa5d6ff"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6fftestTa5d6ff Ta5d6ffresultsTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffCodecovTa5d6ff Ta5d6ff(feature)
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ff!cancelled()Ta5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffcodecov/codecov-action@v7
Tff7b72withTb4b4b4:
Tff7b72tokenTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.CODECOV_TOKENTa5d6ff Ta5d6ff}}
Tff7b72slugTb4b4b4: Ta5d6ffmeshtastic/Meshtastic-Android
Tff7b72flagsTb4b4b4: Ta5d6fffeature
Tff7b72fail_ci_if_errorTb4b4b4: Ta5d6fffalse
Tff7b72disable_searchTb4b4b4: Ta5d6fftrue
Tff7b72report_typeTb4b4b4: Ta5d6fftest_results
Tff7b72filesTb4b4b4: Ta5d6ff"Ta5d6fffeature/**/build/test-results/**/*.xmlTa5d6ff"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6fftestTa5d6ff Ta5d6ffresultsTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffCodecovTa5d6ff Ta5d6ff(app)
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ff!cancelled()Ta5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffcodecov/codecov-action@v7
Tff7b72withTb4b4b4:
Tff7b72tokenTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.CODECOV_TOKENTa5d6ff Ta5d6ff}}
Tff7b72slugTb4b4b4: Ta5d6ffmeshtastic/Meshtastic-Android
Tff7b72flagsTb4b4b4: Ta5d6ffapp
Tff7b72fail_ci_if_errorTb4b4b4: Ta5d6fffalse
Tff7b72disable_searchTb4b4b4: Ta5d6fftrue
Tff7b72report_typeTb4b4b4: Ta5d6fftest_results
Tff7b72filesTb4b4b4: Ta5d6ff"Ta5d6ffandroidApp/build/test-results/**/*.xmlTa5d6ff"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6fftestTa5d6ff Ta5d6ffresultsTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffCodecovTa5d6ff Ta5d6ff(desktop)
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ff!cancelled()Ta5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffcodecov/codecov-action@v7
Tff7b72withTb4b4b4:
Tff7b72tokenTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.CODECOV_TOKENTa5d6ff Ta5d6ff}}
Tff7b72slugTb4b4b4: Ta5d6ffmeshtastic/Meshtastic-Android
Tff7b72flagsTb4b4b4: Ta5d6ffdesktop
Tff7b72fail_ci_if_errorTb4b4b4: Ta5d6fffalse
Tff7b72disable_searchTb4b4b4: Ta5d6fftrue
Tff7b72report_typeTb4b4b4: Ta5d6fftest_results
Tff7b72filesTb4b4b4: Ta5d6ff"Ta5d6ffdesktopApp/build/test-results/**/*.xmlTa5d6ff"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffcoverageTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffCodecovTa5d6ff Ta5d6ff(core)
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ff!cancelled()Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffinputs.run_coverageTa5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffcodecov/codecov-action@v7
Tff7b72withTb4b4b4:
Tff7b72tokenTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.CODECOV_TOKENTa5d6ff Ta5d6ff}}
Tff7b72slugTb4b4b4: Ta5d6ffmeshtastic/Meshtastic-Android
Tff7b72flagsTb4b4b4: Ta5d6ffcore
Tff7b72fail_ci_if_errorTb4b4b4: Ta5d6fffalse
Tff7b72disable_searchTb4b4b4: Ta5d6fftrue
Tff7b72filesTb4b4b4: Ta5d6ff"Ta5d6ffcore/**/build/reports/kover/report*.xmlTa5d6ff"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffcoverageTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffCodecovTa5d6ff Ta5d6ff(feature)
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ff!cancelled()Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffinputs.run_coverageTa5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffcodecov/codecov-action@v7
Tff7b72withTb4b4b4:
Tff7b72tokenTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.CODECOV_TOKENTa5d6ff Ta5d6ff}}
Tff7b72slugTb4b4b4: Ta5d6ffmeshtastic/Meshtastic-Android
Tff7b72flagsTb4b4b4: Ta5d6fffeature
Tff7b72fail_ci_if_errorTb4b4b4: Ta5d6fffalse
Tff7b72disable_searchTb4b4b4: Ta5d6fftrue
Tff7b72filesTb4b4b4: Ta5d6ff"Ta5d6fffeature/**/build/reports/kover/report*.xmlTa5d6ff"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffcoverageTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffCodecovTa5d6ff Ta5d6ff(app)
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ff!cancelled()Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffinputs.run_coverageTa5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffcodecov/codecov-action@v7
Tff7b72withTb4b4b4:
Tff7b72tokenTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.CODECOV_TOKENTa5d6ff Ta5d6ff}}
Tff7b72slugTb4b4b4: Ta5d6ffmeshtastic/Meshtastic-Android
Tff7b72flagsTb4b4b4: Ta5d6ffapp
Tff7b72fail_ci_if_errorTb4b4b4: Ta5d6fffalse
Tff7b72disable_searchTb4b4b4: Ta5d6fftrue
Tff7b72filesTb4b4b4: Ta5d6ff"Ta5d6ffandroidApp/build/reports/kover/report*.xmlTa5d6ff"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffcoverageTa5d6ff Ta5d6fftoTa5d6ff Ta5d6ffCodecovTa5d6ff Ta5d6ff(desktop)
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ff!cancelled()Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffinputs.run_coverageTa5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffcodecov/codecov-action@v7
Tff7b72withTb4b4b4:
Tff7b72tokenTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.CODECOV_TOKENTa5d6ff Ta5d6ff}}
Tff7b72slugTb4b4b4: Ta5d6ffmeshtastic/Meshtastic-Android
Tff7b72flagsTb4b4b4: Ta5d6ffdesktop
Tff7b72fail_ci_if_errorTb4b4b4: Ta5d6fffalse
Tff7b72disable_searchTb4b4b4: Ta5d6fftrue
Tff7b72filesTb4b4b4: Ta5d6ff"Ta5d6ffdesktopApp/build/reports/kover/report*.xmlTa5d6ff"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffshardTa5d6ff Ta5d6ffreports
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffalways()Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffinputs.upload_artifactsTa5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@v7
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffreports-${{Ta5d6ff Ta5d6ffmatrix.shard.nameTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Tb4b4b4|
Tff7b72**/build/reports
Tff7b72**/build/test-results
Tff7b72retention-daysTb4b4b4: Ta5d6ff7
T8b949e# ββ Android Build ββββββββββββββββββββββββββββββββββββββββββββββββββββ
T8b949e# Also generates the dependency graph β assembling both flavors resolves the widest set.
Tff7b72android-checkTb4b4b4:
Tff7b72runs-onTb4b4b4: Ta5d6ffubuntu-24.04
T8b949e# No permissions block on purpose: inherits the caller's. main grants contents: write
T8b949e# (graph submit); PRs grant read (upload only).
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff60
Tff7b72ifTb4b4b4: Ta5d6ffinputs.run_android_buildTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6fftrue
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckoutTa5d6ff Ta5d6ffcode
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v7.0.1
Tff7b72withTb4b4b4:
Tff7b72fetch-depthTb4b4b4: Ta5d6ff0
Tff7b72filterTb4b4b4: Ta5d6ff'Ta5d6ffblob:noneTa5d6ff'
Tff7b72submodulesTb4b4b4: Ta5d6fftrue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffGradleTa5d6ff Ta5d6ffSetup
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/gradle-setup
Tff7b72withTb4b4b4:
Tff7b72gradle_encryption_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GRADLE_ENCRYPTION_KEYTa5d6ff Ta5d6ff}}
Tff7b72develocity_access_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DEVELOCITY_ACCESS_KEYTa5d6ff Ta5d6ff}}
Tff7b72job_summary_pr_commentTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_PR_COMMENTTa5d6ff Ta5d6ff}}
Tff7b72cache_read_onlyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_CACHE_READ_ONLYTa5d6ff Ta5d6ff}}
T8b949e# main submits; PRs upload (no contents: write), dependency-graph-submit.yml finishes.
Tff7b72dependency_graphTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffgithub.event_nameTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'pull_request'Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff'generate-and-upload'Ta5d6ff Ta5d6ff||Ta5d6ff Ta5d6ff(github.refTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'refs/heads/main'Ta5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ff'generate-and-submit'Ta5d6ff Ta5d6ff||Ta5d6ff Ta5d6ff'disabled')Ta5d6ff Ta5d6ff}}
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffTagTa5d6ff Ta5d6ffmain-branchTa5d6ff Ta5d6ffbuildsTa5d6ff Ta5d6ffasTa5d6ff Ta5d6ff-SNAPSHOT
Tff7b72ifTb4b4b4: Ta5d6ffgithub.event_nameTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'push'
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72BASE=$(grep '^VERSION_NAME_BASE=' config.properties | cut -d'=' -f2)
Tff7b72echo "VERSION_NAME=${BASE}-SNAPSHOT" >> "$GITHUB_ENV"
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffAndroidTa5d6ff Ta5d6ffAPKs
Tff7b72runTb4b4b4: Ta5d6ff./gradlewTa5d6ff Ta5d6ffandroidApp:assembleFdroidDebugTa5d6ff Ta5d6ffandroidApp:assembleGoogleDebugTa5d6ff Ta5d6ff-Pci=trueTa5d6ff Ta5d6ff--parallelTa5d6ff Ta5d6ff--configuration-cacheTa5d6ff Ta5d6ff--continue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffdebugTa5d6ff Ta5d6ffartifact
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffinputs.upload_artifactsTa5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@v7
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffapp-debug-apks
Tff7b72pathTb4b4b4: Ta5d6ffandroidApp/build/outputs/apk/*/debug/*.apk
Tff7b72retention-daysTb4b4b4: Ta5d6ff7
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffReportTa5d6ff Ta5d6ffAppTa5d6ff Ta5d6ffSize
Tff7b72ifTb4b4b4: Ta5d6ffalways()
Tff7b72runTb4b4b4: Tb4b4b4|
Tff7b72{
Tff7b72echo "### App Size Report"
Tff7b72echo "| Artifact | Size |"
Tff7b72echo "| --- | --- |"
Tff7b72find androidApp/build/outputs/apk -name "*.apk" -exec du -h {} + | awk '{print "| " $2 " | " $1 " |"}'
Tff7b72} >> "$GITHUB_STEP_SUMMARY"
T8b949e# ββ Desktop Build βββββββββββββββββββββββββββββββββββββββββββββββββββ
Tff7b72build-desktopTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffDesktopTa5d6ff Ta5d6ffDebugTa5d6ff Ta5d6ff(${{Ta5d6ff Ta5d6ffmatrix.osTa5d6ff Ta5d6ff}})
Tff7b72ifTb4b4b4: Ta5d6ffinputs.run_desktop_buildsTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6fftrue
Tff7b72runs-onTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffmatrix.osTa5d6ff Ta5d6ff}}
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72pull-requestsTb4b4b4: Ta5d6ffwrite
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff60
Tff7b72strategyTb4b4b4:
Tff7b72fail-fastTb4b4b4: Ta5d6fffalse
Tff7b72matrixTb4b4b4:
Tff7b72osTb4b4b4: Tb4b4b4[Te6edf3macos-latestTb4b4b4, Te6edf3windows-latestTb4b4b4, Te6edf3ubuntu-24.04Tb4b4b4, Te6edf3ubuntu-24.04-armTb4b4b4]
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckoutTa5d6ff Ta5d6ffcode
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v7.0.1
Tff7b72withTb4b4b4:
Tff7b72fetch-depthTb4b4b4: Ta5d6ff0
Tff7b72filterTb4b4b4: Ta5d6ff'Ta5d6ffblob:noneTa5d6ff'
Tff7b72submodulesTb4b4b4: Ta5d6fftrue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffGradleTa5d6ff Ta5d6ffSetup
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/gradle-setup
Tff7b72withTb4b4b4:
Tff7b72gradle_encryption_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GRADLE_ENCRYPTION_KEYTa5d6ff Ta5d6ff}}
Tff7b72develocity_access_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DEVELOCITY_ACCESS_KEYTa5d6ff Ta5d6ff}}
Tff7b72job_summary_pr_commentTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_PR_COMMENTTa5d6ff Ta5d6ff}}
Tff7b72cache_read_onlyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_CACHE_READ_ONLYTa5d6ff Ta5d6ff}}
Tff7b72install_jetbrains_jdkTb4b4b4: Ta5d6ff'Ta5d6fftrueTa5d6ff'
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffInstallTa5d6ff Ta5d6ffdependenciesTa5d6ff Ta5d6ffforTa5d6ff Ta5d6ffAppImage
Tff7b72ifTb4b4b4: Ta5d6ffrunner.osTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'Linux'
Tff7b72runTb4b4b4: Ta5d6ffsudoTa5d6ff Ta5d6ffapt-getTa5d6ff Ta5d6ffupdateTa5d6ff Ta5d6ff&&Ta5d6ff Ta5d6ffsudoTa5d6ff Ta5d6ffapt-getTa5d6ff Ta5d6ffinstallTa5d6ff Ta5d6ff-yTa5d6ff Ta5d6fflibfuse2t64
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffDesktop
T8b949e# proguardReleaseJars is included because it is otherwise only exercised by the
T8b949e# release workflow: jlink tolerates a jmods-less JDK (JEP 493) but ProGuard does
T8b949e# not, so a broken packaging JDK would surface at release time instead of here.
T8b949e# packageDistributionForCurrentOS (debug build type, no ProGuard) produces real
T8b949e# installers (dmg/msi+exe/deb+rpm+AppImage-dir) so the snapshot release below can
T8b949e# ship something testers can actually install, not just an unpacked app dir.
Tff7b72runTb4b4b4: Ta5d6ff./gradlewTa5d6ff Ta5d6ff:desktopApp:packageDistributionForCurrentOSTa5d6ff Ta5d6ff:desktopApp:proguardReleaseJarsTa5d6ff Ta5d6ff-Pci=true
T8b949e# CMP's TargetFormat.AppImage is jpackage's "app-image" β an unpacked directory, not
T8b949e# a Linux .AppImage. Wrap it into a real AppImage, same as the release workflow.
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffBuildTa5d6ff Ta5d6ffAppImageTa5d6ff Ta5d6fffromTa5d6ff Ta5d6ffjpackageTa5d6ff Ta5d6ffapp-image
Tff7b72ifTb4b4b4: Ta5d6ffrunner.osTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6ff'Linux'
Tff7b72envTb4b4b4:
Tff7b72APP_VERSION_NAMETb4b4b4: Ta5d6ffsnapshot
Tff7b72BINARIES_DIRTb4b4b4: Ta5d6ffdesktopApp/build/compose/binaries/main
Tff7b72runTb4b4b4: Ta5d6ffscripts/build-appimage.sh
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffDesktopTa5d6ff Ta5d6ffartifact
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffinputs.upload_artifactsTa5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@v7
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffdesktop-app-${{Ta5d6ff Ta5d6ffrunner.osTa5d6ff Ta5d6ff}}-${{Ta5d6ff Ta5d6ffrunner.archTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Tb4b4b4|
Tff7b72desktopApp/build/compose/binaries/main/*/*.dmg
Tff7b72desktopApp/build/compose/binaries/main/*/*.msi
Tff7b72desktopApp/build/compose/binaries/main/*/*.exe
Tff7b72desktopApp/build/compose/binaries/main/*/*.deb
Tff7b72desktopApp/build/compose/binaries/main/*/*.rpm
Tff7b72desktopApp/build/compose/binaries/main/*/*.AppImage
Tff7b72retention-daysTb4b4b4: Ta5d6ff7
Tff7b72if-no-files-foundTb4b4b4: Ta5d6fferror
T8b949e# ββ Flatpak Sources βββββββββββββββββββββββββββββββββββββββββββββββββββ
Tff7b72build-flatpak-srcTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffGenerateTa5d6ff Ta5d6ffFlatpakTa5d6ff Ta5d6ffSourcesTa5d6ff Ta5d6ff(${{Ta5d6ff Ta5d6ffmatrix.osTa5d6ff Ta5d6ff}})
Tff7b72ifTb4b4b4: Ta5d6ffinputs.run_desktop_flatpak_srcTa5d6ff Ta5d6ff==Ta5d6ff Ta5d6fftrue
Tff7b72runs-onTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffmatrix.osTa5d6ff Ta5d6ff}}
Tff7b72permissionsTb4b4b4:
Tff7b72contentsTb4b4b4: Ta5d6ffread
Tff7b72pull-requestsTb4b4b4: Ta5d6ffwrite
Tff7b72timeout-minutesTb4b4b4: Ta5d6ff60
Tff7b72strategyTb4b4b4:
Tff7b72fail-fastTb4b4b4: Ta5d6fffalse
Tff7b72matrixTb4b4b4:
Tff7b72osTb4b4b4: Tb4b4b4[Te6edf3ubuntu-24.04Tb4b4b4, Te6edf3ubuntu-24.04-armTb4b4b4]
Tff7b72stepsTb4b4b4:
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffCheckoutTa5d6ff Ta5d6ffcode
Tff7b72usesTb4b4b4: Ta5d6ffactions/checkout@v7.0.1
Tff7b72withTb4b4b4:
Tff7b72fetch-depthTb4b4b4: Ta5d6ff0
Tff7b72filterTb4b4b4: Ta5d6ff'Ta5d6ffblob:noneTa5d6ff'
Tff7b72submodulesTb4b4b4: Ta5d6fftrue
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffGradleTa5d6ff Ta5d6ffSetup
Tff7b72usesTb4b4b4: Ta5d6ff./.github/actions/gradle-setup
Tff7b72withTb4b4b4:
Tff7b72gradle_encryption_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.GRADLE_ENCRYPTION_KEYTa5d6ff Ta5d6ff}}
Tff7b72develocity_access_keyTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffsecrets.DEVELOCITY_ACCESS_KEYTa5d6ff Ta5d6ff}}
Tff7b72job_summary_pr_commentTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffenv.GRADLE_PR_COMMENTTa5d6ff Ta5d6ff}}
Tff7b72cache_read_onlyTb4b4b4: Ta5d6fftrue
Tff7b72install_jetbrains_jdkTb4b4b4: Ta5d6ff'Ta5d6fftrueTa5d6ff'
T8b949e# Isolated Gradle user home β see explanation in release.yml.
T8b949e# packageUberJarForCurrentOS is what the in-flatpak build invokes; it resolves the FULL
T8b949e# runtime classpath. :assemble alone would miss runtime-only deps (skiko, ktor-cio, β¦).
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffGenerateTa5d6ff Ta5d6ffFlatpakTa5d6ff Ta5d6ffSources
Tff7b72runTb4b4b4: Tb4b4b4>
Tff7b72./gradlew --no-build-cache --no-configuration-cache
Tff7b72-Dgradle.user.home=${{ runner.temp }}/flatpak-gradle-home
Tff7b72:desktopApp:packageUberJarForCurrentOS :captureFlatpakSources
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffStageTa5d6ff Ta5d6ffmanifest
Tff7b72runTb4b4b4: Ta5d6ffcpTa5d6ff Ta5d6ffbuild/flatpak-sources.jsonTa5d6ff Ta5d6ffflatpak-sources.json
Tb4b4b4- Tff7b72runTb4b4b4: Ta5d6fflsTa5d6ff Ta5d6ff-lahTa5d6ff Ta5d6ffflatpak-sources.json
Tb4b4b4- Tff7b72nameTb4b4b4: Ta5d6ffUploadTa5d6ff Ta5d6ffFlatpakTa5d6ff Ta5d6ffSources
Tff7b72ifTb4b4b4: Ta5d6ff${{Ta5d6ff Ta5d6ffinputs.upload_artifactsTa5d6ff Ta5d6ff}}
Tff7b72usesTb4b4b4: Ta5d6ffactions/upload-artifact@v7
Tff7b72withTb4b4b4:
Tff7b72nameTb4b4b4: Ta5d6ffflatpak-sources-${{Ta5d6ff Ta5d6ffrunner.archTa5d6ff Ta5d6ff}}
Tff7b72pathTb4b4b4: Ta5d6ffflatpak-sources.json
Tff7b72retention-daysTb4b4b4: Ta5d6ff7
Served by rngit 1.5.2 - Generated in 0.12s